portal: Send file filters to the portal
authorMatthias Clasen <mclasen@redhat.com>
Sat, 11 Jun 2016 04:46:12 +0000 (00:46 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 8 Jul 2016 04:07:54 +0000 (00:07 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=768499

gtk/gtkfilechoosernativeportal.c

index a43ca60ddb223ba78befe6f6d5a305aac9c17b45..d0bd149e130fa221b201525e272f81d900763c0d 100644 (file)
@@ -243,6 +243,24 @@ open_file_msg_cb (GObject *source_object,
   g_object_unref (reply);
 }
 
+static GVariant *
+get_filters (GtkFileChooser *self)
+{
+  GSList *list, *l;
+  GVariantBuilder builder;
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sa(us))"));
+  list = gtk_file_chooser_list_filters (self);
+  for (l = list; l; l = l->next)
+    {
+      GtkFileFilter *filter = l->data;
+      g_variant_builder_add (&builder, "@(sa(us))", gtk_file_filter_to_gvariant (filter));
+    }
+  g_slist_free (list);
+
+  return g_variant_builder_end (&builder);
+}
+
 gboolean
 gtk_file_chooser_native_portal_show (GtkFileChooserNative *self)
 {
@@ -338,6 +356,7 @@ gtk_file_chooser_native_portal_show (GtkFileChooserNative *self)
                            g_variant_new_string (self->cancel_label));
   g_variant_builder_add (&opt_builder, "{sv}", "modal",
                          g_variant_new_boolean (data->modal));
+  g_variant_builder_add (&opt_builder, "{sv}", "filters", get_filters (GTK_FILE_CHOOSER (self)));
 
   g_dbus_message_set_body (message,
                            g_variant_new ("(ss@a{sv})",